[BITS 16]

%include "bios.mac"

OM_KERNEL_STACK_PADDR equ 0xA0000		; Ojo que este valor tiene que coincidir con el que aparece en om.h

[GLOBAL start]

[EXTERN A20_enable]
[EXTERN kernel_init]
[EXTERN gdtr]

section .text

; Por aca empieza todo...

start:

	cli

	call A20_enable

	lgdt [gdtr] 			; Cargo la GDT

	mov 	eax, cr0
	or  	eax, 0x1
	mov 	cr0, eax		; Activo modo protegido

    jmp 0x08:modo_protegido ; Cargo el registro CS con 0x08

[BITS 32]

modo_protegido:

	mov 	ax, 0x10
	
	mov 	ds, ax
	mov 	es, ax
	mov 	fs, ax
	mov 	ss, ax
	
	; Armo la pila del kernel
	
	mov 	esp, OM_KERNEL_STACK_PADDR
	mov 	ebp, OM_KERNEL_STACK_PADDR

	call 	kernel_init

	; No deberia volver de este llamado

	jmp $
